ARIA: checkbox role
Die checkbox
-Rolle ist für anklickbare interaktive Steuerelemente vorgesehen. Elemente, die role="checkbox"
enthalten, müssen auch das aria-checked
-Attribut enthalten, um den Status der Checkbox für unterstützende Technologien offenzulegen.
<span
role="checkbox"
aria-checked="false"
tabindex="0"
aria-labelledby="chk1-label"></span>
<label id="chk1-label">Remember my preferences</label>
Hinweis:
Die erste Regel von ARIA besagt: Wenn ein nativer HTML-Tag oder ein Attribut die benötigte Semantik und das erforderliche Verhalten erfüllt, verwenden Sie es anstelle eines neu genutzten Elements mit zugefügtem ARIA. Nutzen Sie stattdessen die native HTML-Checkbox des <input type="checkbox">
(mit einem zugehörigen <label>
), die alle erforderlichen Funktionen nativ bereitstellt:
<input type="checkbox" id="chk1-label" name="RememberPreferences" />
<label for="chk1-label">Remember my preferences</label>
Beschreibung
Die native HTML-Checkbox (<input type="checkbox">
) Formularsteuerung hat zwei Zustände ("ausgewählt" oder "nicht ausgewählt"), mit einem über JavaScript setzbaren indeterminate
-Status. Ebenso kann ein Element mit role="checkbox"
drei Zustände über das aria-checked
-Attribut offenlegen: true
, false
oder mixed
.
Da eine Checkbox ein interaktives Steuerelement ist, muss sie fokussierbar und über die Tastatur zugänglich sein. Wenn die Rolle auf ein nicht fokussierbares Element angewendet wird, verwenden Sie das tabindex
-Attribut, um dies zu ändern. Die erwartete Tastenkombination zum Aktivieren einer Checkbox ist die Leertaste.
Der Entwickler muss den Wert des aria-checked
-Attributs dynamisch ändern, wenn die Checkbox aktiviert wird.
Alle Nachkommen sind präsentational
Es gibt einige Arten von Benutzeroberflächenkomponenten, die, wenn sie in einer Plattform-Barrierefreiheits-API dargestellt werden, nur Text enthalten können. Barrierefreiheits-APIs haben keine Möglichkeit, semantische Elemente in einer checkbox
darzustellen. Um mit dieser Einschränkung umzugehen, wenden Browser automatisch die Rolle presentation
auf alle Nachkommenelemente eines checkbox
-Elements an, da es sich um eine Rolle handelt, die keine semantischen Kinder unterstützt.
Beispielsweise betrachten Sie das folgende checkbox
-Element, das eine Überschrift enthält.
<div role="checkbox"><h6>Name of my checkbox</h6></div>
Da Nachkommen von checkbox
präsentational sind, ist der folgende Code gleichwertig:
<div role="checkbox"><h6 role="presentation">Name of my checkbox</h6></div>
Aus der Perspektive eines Benutzers unterstützender Technologie existiert die Überschrift nicht, da die vorherigen Code-Snippets im Barrierefreiheit-Baum gleichwertig zu Folgendem sind:
<div role="checkbox">Name of my checkbox</div>
Zugehörige WAI-ARIA-Rollen, Zustände und Eigenschaften
aria-checked
-
Der Wert von
aria-checked
definiert den Zustand einer Checkbox. Dieses Attribut hat einen von drei möglichen Werten: tabindex="0"
-
Wird verwendet, um es fokussierbar zu machen, damit der Nutzer unterstützender Technologie es direkt tabularisieren und sofort lesen kann.
Tastaturinteraktionen
Taste | Funktion |
---|---|
Leertaste | Aktiviert die Checkbox |
Erforderliches JavaScript
Erforderliche Ereignishandler
onclick
-
Behandeln Sie Mausklicks sowohl auf die Checkbox als auch auf das zugehörige Label, das den Zustand der Checkbox verändert, indem der Wert des
aria-checked
-Attributs und das Erscheinungsbild der Checkbox so verändert werden, dass sie für den sehenden Benutzer als ausgewählt oder nicht ausgewählt erscheint. onKeyDown
-
Verarbeiten Sie den Fall, in dem der Benutzer die Leertaste drückt, um den Zustand der Checkbox zu ändern, indem der Wert des
aria-checked
-Attributs und das Erscheinungsbild der Checkbox so verändert werden, dass sie für den sehenden Benutzer als ausgewählt oder nicht ausgewählt erscheint.
Beispiele
Das folgende Beispiel erstellt ein ansonsten nicht-semantisches Checkbox-Element mithilfe von CSS und JavaScript, um den ausgewählten oder nicht ausgewählten Status des Elements zu verwalten.
HTML
<span
role="checkbox"
id="chkPref"
aria-checked="false"
onclick="changeCheckbox()"
onKeyDown="changeCheckbox(event.code)"
tabindex="0"
aria-labelledby="chk1-label"></span>
<label
id="chk1-label"
onclick="changeCheckbox()"
onKeyDown="changeCheckbox(event.code)"
>Remember my preferences</label
>
CSS
[role="checkbox"] {
padding: 5px;
}
[role="checkbox"]:focus {
border: 2px solid #0198e1;
}
[aria-checked="true"]::before {
content: "[x]";
}
[aria-checked="false"]::before {
content: "[ ]";
}
JavaScript
function changeCheckbox(code) {
const item = document.getElementById("chkPref");
const checked = item.getAttribute("aria-checked");
if (code && code !== "Space") {
return;
}
if (checked === "true") {
item.setAttribute("aria-checked", "false");
} else {
item.setAttribute("aria-checked", "true");
}
}
Barrierefreiheitsbedenken
Wenn die checkbox
-Rolle zu einem Element hinzugefügt wird, sollte der User-Agent Folgendes tun:
- Das Element im Barrierefreiheits-API des Betriebssystems als Checkbox-Rolle darstellen.
- Wenn sich der
aria-checked
-Wert ändert, ein Barrierefreiheits-Zustandsänderungsereignis senden.
Produkte unterstützender Technologien sollten Folgendes tun:
- Screenreader sollten das Element als Checkbox ankündigen und optional Anweisungen geben, wie es aktiviert werden kann.
Personen, die Checkboxen implementieren, sollten Folgendes tun:
- Sicherstellen, dass die Checkbox sowohl über Tastatursteuerelemente als auch über Klicks erreicht und interagiert werden kann
- Das
aria-checked
-Attribut nach Benutzereingriffen aktuell halten - Stile bereitstellen, die anzeigen, wann die Checkbox fokussiert ist
Hinweis: Die Meinungen darüber, wie unterstützende Technologien mit dieser Technik umgehen sollten, können variieren. Die oben bereitgestellten Informationen sind eine dieser Meinungen und können sich ändern.
Beste Praktiken
Die erste Regel von ARIA ist: Wenn ein nativer HTML-Tag oder ein Attribut die benötigte Semantik und das erforderliche Verhalten erfüllt, verwenden Sie es anstelle eines neu genutzten Elements mit einer ARIA-Rolle, -Zustand oder -Eigenschaft, um es zugänglich zu machen. Daher wird empfohlen, das native HTML-Checkbox-Formularsteuerelement zu verwenden, anstatt die Funktionalität einer Checkbox mit JavaScript und ARIA neu zu erstellen.